package reflect.classinfo;

import reflect.entity.Person;

import java.lang.reflect.Modifier;

/**
 * @version 1.0
 * @author:罗苏琴
 * @Date 2024/12/2 下午2:06
 */
public class GetClassInfo {
    public static void main(String[] args) {
        Class clz= Person.class;//获取Class实例
        String fullName=clz.getName();
        String simpleName=clz.getSimpleName();
        System.out.println("以下是"+fullName+"类的基本信息");
        System.out.println("完全限定名："+clz.getName());
        System.out.println("-------------------------------");
        //获取Person类所在的包
        Package pkg=clz.getPackage();//得到包名
        System.out.println(simpleName+"定义在："+pkg.getName()+"包中");
        System.out.println("------------------------------------------");
        Class superClass=clz.getSuperclass();
        System.out.println(simpleName+"类的超类是"+superClass.getName());
        System.out.println("---------------------------------------------");
        Class [] interfaces=clz.getInterfaces();
        System.out.println(simpleName+"类所实现大的接口：");
        for(Class c:interfaces){
            System.out.println("\t"+c.getName());
        }
        System.out.println("-----------------------------------------------");
        //修饰符
        int modifier=clz.getModifiers();
        System.out.println(simpleName+"类的修饰符：");
        if((modifier & Modifier.PUBLIC)==Modifier.PUBLIC){
            System.out.println("\t访问修饰符是：public");
        }else{
            System.out.println("\t访问修饰符是：default(package)");
        }if((modifier &Modifier.FINAL)==Modifier.FINAL){
            System.out.println("\t这个类是final的");
        }
        if((modifier &Modifier.ABSTRACT)==Modifier.ABSTRACT)
            System.out.println("\t这是一个抽象类");
        if((modifier &Modifier.INTERFACE)==Modifier.INTERFACE)
            System.out.println("\t这是一个接口");
        System.out.println("---------------------------------------------------");
    }
}
